package com.macro.mall.service.impl;

import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.macro.mall.mapper.SmsHomeAdvertiseMapper;
import com.macro.mall.model.SmsHomeAdvertise;
import com.macro.mall.model.SmsHomeAdvertiseExample;
import com.macro.mall.service.SmsHomeAdvertiseService;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/** 首页广告管理Service实现类 Created by macro on 2018/11/7. */
@Service
public class SmsHomeAdvertiseServiceImpl implements SmsHomeAdvertiseService {
  @Autowired private SmsHomeAdvertiseMapper advertiseMapper;

  @Override
  public int create(SmsHomeAdvertise advertise) {
    advertise.setClickCount(0);
    advertise.setOrderCount(0);
    return advertiseMapper.insert(advertise);
  }

  @Override
  public int delete(List<Long> ids) {
    SmsHomeAdvertiseExample example = new SmsHomeAdvertiseExample();
    example.createCriteria().andIdIn(ids);
    return advertiseMapper.deleteByExample(example);
  }

  @Override
  public int updateStatus(Long id, Integer status) {
    SmsHomeAdvertise record = new SmsHomeAdvertise();
    record.setId(id);
    record.setStatus(status);
    return advertiseMapper.updateByPrimaryKeySelective(record);
  }

  @Override
  public SmsHomeAdvertise getItem(Long id) {
    return advertiseMapper.selectByPrimaryKey(id);
  }

  @Override
  public int update(Long id, SmsHomeAdvertise advertise) {
    advertise.setId(id);
    return advertiseMapper.updateByPrimaryKeySelective(advertise);
  }

  @Override
  public List<SmsHomeAdvertise> list(
      String name, Integer type, String endTime, Integer pageSize, Integer pageNum) {
    PageHelper.startPage(pageNum, pageSize);
    SmsHomeAdvertiseExample example = new SmsHomeAdvertiseExample();
    SmsHomeAdvertiseExample.Criteria criteria = example.createCriteria();
    if (!StrUtil.isEmpty(name)) {
      criteria.andNameLike("%" + name + "%");
    }
    if (type != null) {
      criteria.andTypeEqualTo(type);
    }
    if (!StrUtil.isEmpty(endTime)) {
      String startStr = endTime + " 00:00:00";
      String endStr = endTime + " 23:59:59";
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date start = null;
      try {
        start = sdf.parse(startStr);
      } catch (ParseException e) {
        e.printStackTrace();
      }
      Date end = null;
      try {
        end = sdf.parse(endStr);
      } catch (ParseException e) {
        e.printStackTrace();
      }
      if (start != null && end != null) {
        criteria.andEndTimeBetween(start, end);
      }
    }
    example.setOrderByClause("sort desc");
    return advertiseMapper.selectByExample(example);
  }
}
